// ForceAssign.h: interface for the ForceAssign class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_FORCEASSIGN_H__E676D894_2EDF_485E_B67A_F824F517C9C1__INCLUDED_)
#define AFX_FORCEASSIGN_H__E676D894_2EDF_485E_B67A_F824F517C9C1__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "FunctionObject.h"
#include "JointFunction.h"

class ForceAssignStrategy;

class ForceAssign : public FunctionObject  
{
	friend class ForceAssignStrategy;
public:
	enum{
		eGENERALSTRATEGY};

	DECLARE_DYNAMIC_CREATE(ForceAssign)
public:
	ForceAssign();
	virtual ~ForceAssign();

public:
	virtual BOOL Execute();
	void SufferForcePort(JointFunction* pPort){
		m_pJointPort = pPort;
	}

	JointFunction* SufferForcePort(){
		return m_pJointPort;
	}

private:
	void ClearStrategy();

private:
	INT m_nStrategyNum;
	ForceAssignStrategy* m_pStrategy;
	JointFunction* m_pJointPort;
};

#endif // !defined(AFX_FORCEASSIGN_H__E676D894_2EDF_485E_B67A_F824F517C9C1__INCLUDED_)
